<?php
require_once('../zAPI/properties.inc.php');
require_once( ROOT_CLASS . 'Kernel.class.php');
require_once( $kernel->getClass("Util") );
require_once( $kernel->getClass("BusinessObject") );
require_once( ROOT_CLASS . 'DataObject/DotacaoDO.class.php');
require_once( ROOT_DATA_OBJECT . 'DataObject.class.php');
require_once( ROOT_CLASS . 'zAccess/zAccess.class.php' );
?>

<?php 

class DotacaoController{
	
	function __construct(){
		$AccessAction = new AccessAction();
		$AccessAction->validSessionUsuario();
    }
	
	function listarDotacoes($instanceDB, $postRequest, $getRequest){
		
		$DotacaoBO = new DotacaoBO();
			
		$result = $DotacaoBO->listarDotacoes($instanceDB,$postRequest["Projeto_codigo"]);
		
		for($i=0; $i < count($result); $i++){
			$result[$i]->add("totalEntradas",$DotacaoBO->calculaEntradasDotacao($instanceDB, $result[$i]->get("codigo")));
			$result[$i]->add("totalSaidas",$DotacaoBO->calculaSaidasDotacao($instanceDB, $result[$i]->get("codigo")));
			$result[$i]->add("saldoDotacao",$DotacaoBO->calculaSaldoDotacao($instanceDB, $result[$i]->get("codigo")));
		}
		
		
		
		
		$retorno = "{";
			$retorno .= "success 	: true,";
			$retorno .= "message	: 'Dotações listadas com sucesso',";
			$dados = "";
			$aux = "";
			for ($i = 0; $i < count($result); $i++){
				$dados .= $aux . utf8_encode( $result[$i]->transformDataObjectToJSON() );
				$aux = ",";
			}
			$retorno .= "elements : [" . $dados . "]";
		$retorno .= "}";
			
		return $retorno;
	
	}
	

	function inserir($instanceDB, $postRequest, $getRequest){
		
		$dotacaoBO = new DotacaoBO();
		$dotacaoDO = new DotacaoDO();
		
		$dotacaoDO->loadDataObjectByPost( $_POST, TRUE );

		$result = $dotacaoBO->inserir($instanceDB, $dotacaoDO);

		if ( $result === FALSE ){
			$retorno = "{";
			$retorno .="success : false,";
			$retorno .="message : 'Não foi possível inserir as informações.'";
			$retorno .="}";
		} else {
			$retorno .="{";
			$retorno .="success : true,";
			$retorno .="message : 'Inserido com com sucesso!',";
			$dados = "";
			$aux = "";
			for ($i = 0; $i < count($result); $i++){
				$dados .= $aux . utf8_encode( $result[$i]->transformDataObjectToJSON() );
				$aux = ",";
			}
			$retorno .="elements : [" . $dados . "]";
			$retorno .="}";
		}

		return $retorno;
	}
		
		
	
	function excluir($instanceDB, $postRequest, $getRequest){
			
		$dotacaoBO = new DotacaoBO();
		$dotacaoDO = new DotacaoDO();

		
		$codigoDotacao = $_POST["codigo"];
		
		$validaExclusao = $dotacaoBO->validaExclusao($instanceDB, $codigoDotacao);
		
		$dotacaoDO->set( "codigo", $codigoDotacao );
		$aux = $validaExclusao[0]->get("QtdMovimentacoes");
		
				
		if ($aux > 0){
			
			$retorno = "{";
			$retorno .="success : false,";
			$retorno .="message : 'Não foi possível excluir, dotação possui movimento de caixa relacionado '";
			$retorno .="}";
			
			return $retorno;
			//echo "Teste: ".$aux;
		}
		
		$resultadoDotacao = $dotacaoBO->excluir( $instanceDB, $dotacaoDO );
		
		
		if ( $resultadoDotacao === FALSE){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Não foi possível excluir o registro.'";
			$retorno .= "}";
		}else {
			$retorno .= "{";
			$retorno .= "success : true,";
			$retorno .= "message : 'Excluído com sucesso!'";
			$retorno .= "}";
		}
		return $retorno;
		
	}


	function alterar($instanceDB, $postRequest, $getRequest){
		
		$dotacaoBO = new DotacaoBO();
		$dotacaoDO = new DotacaoDO();
		
		$dotacaoDO->loadDataObjectByPost( $_POST, TRUE );
		
		$resultadoDotacao = $dotacaoBO->alterar( $instanceDB, $dotacaoDO);
			
		if ( $resultadoDotacao === FALSE){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Não foi possível alterar o registro.'";
			$retorno .= "}";
		}else {
			$retorno .=  "{";
			$retorno .= "success : true,";
			$retorno .= "message : 'Alterado com sucesso!'";
			$retorno .= "}";
		}
		return $retorno;
	}

	
	
	function capturarDotacao($instanceDB, $postRequest, $getRequest){

		$dotacaoBO = new DotacaoBO();
		$result = $dotacaoBO->capturarDotacao($instanceDB, $postRequest["codigoDotacao"]);

		$retorno = "{";
		$retorno .= "success 	: true,";
		$retorno .= "message	: 'Dotação capturada com sucesso',";
		$dados = "";
		$aux = "";
		for ($i = 0; $i < count($result); $i++){
			$dados .= $aux . utf8_encode( $result[$i]->transformDataObjectToJSON() );
			$aux = ",";
		}
		$retorno .= "elements : [" . $dados . "]";
		$retorno .= "}";
				
		return $retorno;
	}
	
	
	
	function calculaSaldoDotacao($instanceDB, $postRequest, $getRequest){
		
		$dotacaoBO = new DotacaoBO();
		$saldoDotacao = $dotacaoBO->calculaSaldoDotacao($instanceDB, $postRequest["codigoDotacao"]);
		
		
		
		if ( $saldoDotacao === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Erro ao calcular o saldo da dotação'";
			$retorno .= "}";
		}else{
			
			$retorno .= "{";
			$retorno .= "success 	: true,";
			$retorno .= "message	: 'Saldo da dotação calculado com sucesso',";
			$retorno .= "elements : [{'saldoCalculadoDotacao': '".$saldoDotacao."'}]";
			$retorno .= "}";
		
		}
		return $retorno;	
	}

	function  calculaEntradasDotacao($instanceDB, $postRequest, $getRequest){
		
		$dotacaoBO = new DotacaoBO();
		$entradasDotacao = $dotacaoBO->calculaEntradasDotacao($instanceDB, $_POST["codigoDotacao"]);
		
		//echo $_GET["codigoDotacao"];
		
		if ( $entradasDotacao === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Erro ao calcular as entradas (créditos) da dotação'";
			$retorno .= "}";
		}else{
			
			$retorno .= "{";
			$retorno .= "success 	: true,";
			$retorno .= "message	: 'Entradas (créditos) da dotação calculadas com sucesso',";
			$retorno .= "elements : ['entradasDotacao': '".$entradasDotacao."'";
			$retorno .= "}";
		}
		return $retorno;	
	}

	function  calculaSaidasDotacao($instanceDB, $postRequest, $getRequest){
		
		$dotacaoBO = new DotacaoBO();
		$saidasDotacao = $dotacaoBO->calculaSaidasDotacao($instanceDB, $_POST["codigoDotacao"]);
		
		
		
		if ( $saidasDotacao === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Erro ao calcular as saídas (débitos) da dotação'";
			$retorno .= "}";
		}else{
			
			$retorno .= "{";
			$retorno .= "success 	: true,";
			$retorno .= "message	: 'Saídas (débitos) da dotação calculadas com sucesso',";
			$retorno .= "elements : ['saídasDotacao': '".$saidasDotacao."'";
			$retorno .= "}";
		}

		return $retorno;	
	}
	
	function  validaExclusao($instanceDB, $postRequest, $getRequest){
		
		$dotacaoBO = new DotacaoBO();
		$validaExclusao = $dotacaoBO->validaExclusao($instanceDB, $_GET["codigoDotacao"]);
		
		
		
		if ( $saidasDotacao === FALSE ){
			$retorno = "{";
			$retorno .= "success : false,";
			$retorno .= "message : 'Erro ao calcular as saídas (débitos) da dotação'";
			$retorno .= "}";
		}else {
			$retorno .="{";
			$retorno .="success : true,";
			$retorno .="message : 'Inserido com com sucesso!',";
			$dados = "";
			$aux = "";
			for ($i = 0; $i < count($validaExclusao); $i++){
				$dados .= $aux . utf8_encode( $validaExclusao[$i]->transformDataObjectToJSON() );
				$aux = ",";
			}
			$retorno .="elements : [" . $dados . "]";
			$retorno .="}";
		}

		return $retorno;
	}
}
	
?>

